/*
 * Copyright 2009 Prime Technology.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.primefaces.examples.view;

import java.io.IOException;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlInputText;
import javax.faces.context.FacesContext;

import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.layout.LayoutUnit;

import org.primefaces.event.CloseEvent;
import org.primefaces.event.ResizeEvent;
import org.primefaces.event.ToggleEvent;

public class LayoutBean {
		
	public void handleClose(CloseEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Unit Closed", "Position:'" + ((LayoutUnit)event.getComponent()).getPosition() + "'");
		
		addMessage(message);
	}
	
	public void handleToggle(ToggleEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, ((LayoutUnit)event.getComponent()).getPosition() + " toggled", "Status:" + event.getVisibility().name());
		System.out.println("Comp:"+event.getComponent().getParent().getChildren());
		List<UIComponent> comp = event.getComponent().getParent().getChildren();
		LayoutUnit formsLayoutUnit = null;
		for (UIComponent uiComponent : comp) {
			
			if("formcontent".equals(uiComponent.getClientId())) {
				System.out.println("uiComponent:"+uiComponent.getClientId());
				formsLayoutUnit = (LayoutUnit)uiComponent;
				
			    
			}
		}
		if(formsLayoutUnit!=null) {
			InputText inputText = new InputText();
			inputText.setParent(formsLayoutUnit);
		    inputText.setId("j_idt54");
		    System.out.println("formsLayoutUnit:"+formsLayoutUnit.getChildren());
		    
		    List<UIComponent> kids = formsLayoutUnit.getChildren();
		    UIComponent formElement = null;
		    for (UIComponent uiComponent : kids) {
		    	formElement = uiComponent;
		    	System.out.println("kid:"+uiComponent.getClientId(FacesContext.getCurrentInstance()));
			}
		    
		    formsLayoutUnit.getChildren().remove(formElement);
		    
		    
		    try {
				/*inputText.encodeBegin(FacesContext.getCurrentInstance());
				inputText.encodeEnd(FacesContext.getCurrentInstance());
				formsLayoutUnit.getChildren().add(inputText);*/
				
				formsLayoutUnit.encodeBegin(FacesContext.getCurrentInstance());
				formsLayoutUnit.encodeEnd(FacesContext.getCurrentInstance());
				
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		    
		}
		
		
		
		
		addMessage(message);
	}
	
	public void handleResize(ResizeEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, ((LayoutUnit)event.getComponent()).getPosition() + " resized", "Width:" + event.getWidth() + ", Height:" + event.getHeight());
		
		addMessage(message);
	}
	
	private void addMessage(FacesMessage message) {
		FacesContext.getCurrentInstance().addMessage(null, message);
	}
}
